// 导入cookies模块，用于处理cookie相关操作
import cookies from '@utils/cookies'
// 导入路由模块
import router from "./router.js";
// 导入NProgress模块，用于显示页面加载进度
import NProgress from "nprogress";
// 导入NProgress的CSS文件，用于页面加载进度的样式
import "nprogress/nprogress.css";
// 导入store模块，用于处理状态管理
import store from "../store";
// 配置NProgress的动画效果和速度
NProgress.configure({
  ease: "ease",
  speed: 500,
});
// 定义需要进行登录验证的路由路径数组
const writeNames = ["/login"];
// 在路由跳转前进行全局守卫，用于进行登录验证和开始加载进度
router.beforeEach((to, from, next) => {
  // 开始页面加载进度
  NProgress.start();
  // 检查是否存在token，以确定用户是否已登录
  if (sessionStorage.getItem("token")) {
    // 如果用户已登录且尝试访问登录页面，则重定向到主页
    if (to.path === "/login") {
      next("/");
    }
    // 允许访问其他页面
    return next();
  } else {
    // 如果用户未登录且尝试访问的页面需要登录验证，则允许访问
    if (writeNames.includes(to.path)) {
      next();
    } else {
      // 否则，重定向用户到登录页面
      next("/login");
    }
  }
});

// 在路由跳转后进行全局守卫，用于结束加载进度
router.afterEach((transition) => {
  // 结束页面加载进度
  NProgress.done();
});

// 导出配置好的路由模块
export default router;

